home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / asm / Asm_Course2.lha / Teil30.TXT < prev    next >
Text File  |  1992-09-02  |  10KB  |  190 lines

  1.           A S S E M B L E R - K U R S       (c)  Jeff Kandle 1991
  2.  
  3.                                 30.Teil...
  4.  
  5. Puh, das war aber jetzt eine lange Pause mit diesem Kurs, aber ich hatte
  6. Facharbeiterpruefung, und da muss man ja ein bisschen ueben, oder?
  7. Da ich mir denke das viele schon sehr weit sind mit Assemblern, da koennte
  8. wir mal besprechen wie man ein Intro schreibt. Nicht vom Programm her, das
  9. muesstet ihr schon koennen sondern vom drumherum. Die vorbereitungen und
  10. so.
  11. Als, erstes muss ich sagen das ich mich nicht hinsetzen kann und sagen,
  12. `Jetzt schreibe ich ein Intro`. Ich schreibe meine Intros immer dann wenn
  13. ich irgendeinen guten Effekt programmiert habe, der gut in ein Intro passen
  14. koennte. Dann setze ich mich hin, hoere Musik, und ueberlege mir das drum
  15. herum. Was noch passieren muesste. Der Nachteil liegt darin, das der Effekt
  16. den ich als Grundlage nehme, immer der Hauptteil des Intro`s bleibt, und
  17. man den rest drumherum programmiert. Das ist natuerlich nicht die Optimale
  18. loesung. Deshalb gehe ich so vor:
  19. Sobald ich einen Introreifen Effekt programmiert habe, denke ich mir das
  20. Intro aus, wo er gut reinpassen wuerde, und schreibe mir alles was reim
  21. muss, und alles was noch reinpasst auf.
  22.  
  23. Muss-
  24. Laufschrift
  25.  
  26. Kann-
  27. Schwabbeln
  28. Wasser
  29. Sterne
  30. Schwingendes Logo
  31.  
  32. Laufschrift ist finde ich ein muss fuer ein Intro. Da das was man mitteilen
  33. will ja in nicht zu aufdringlicher form vorhanden sein muss, aber das Ziel
  34. eines Intro ja der ist, zu sagen was sache ist und so. Demo`s, besonders
  35. Teile von Megademos kommen manchmal ohne Laufschrift aus, da die Effekte
  36. schon reichen um den Zuschauer bei dem teil zu lassen.
  37. Dann sollte man sich gedanken machen wie das Demo ungefaehr aussehen soll.
  38. Danach kann ich dann entscheiden was an zusatzeffekte noch eingbaut wird.
  39. Es bringt absolut nichts wenn man in jedes Intro Sterne reinschmeisst, das
  40. ist dann nichts besonderes mehr. Man muss sich ueberlegen was am besten
  41. aussieht.
  42. Nachdem man ungefaehr weiss wie das Intro aussehen soll, kann man sich
  43. gedanken ueber aussehen und groesse der Laufschrift machen. Sie sollte sich
  44. ins gesamtbild des Intro gut einfuegen.
  45. Wenn man zum Beispiel auf dem Introscreen zwei effekte hat, die jeweils ein
  46. drittel des Bildschirms belegen, dann kann man auch die Laufschrift ein
  47. drittel des Screens grossmachen. Wenn man ein Logo das halb so gross ist
  48. wie der Bildschirm ist, hat und einen Viertelscreen Effekt, dann sollte man
  49. auch die Laufschrift nicht groesser machen.
  50. Das ganze zeichnet man sich am Sinnvollste irgendwie auf. Dann beginnt die
  51. Gliederung. Das heisst was ist am wichtigsten, und was muss von Zeitlichen
  52. aufbau an erster und an zweiter Stelle kommen.
  53. Hierbei ist wichtig wie der Screen auszusehen hat. Grundsaetzlich muss ja
  54. die Musik zuerst gespielt werden. Da die Musik aber mit dem Prozessor und
  55. Paula gemacht wird, koennen wir nebenbei noch dem Blitter etwas arbeit
  56. geben. Also lassen wir sofern eine Blitter-Laufschrift vorhanden ist, und
  57. diese in verschachtelten Plane auf den Bildschirm liegt, den Blitter
  58. gleichzeitig mit der Musik, noch die Laufschrift eins oder zwei weiter
  59. schieben. Wenn die Abspielroutine dann ans Intro zurueckgibt, dann ist der
  60. Blitter schon fertig und kann andere aufgaben uebernehmen. Man muss
  61. zwischen sichtbaren und unsichtbare Aktionen unterscheiden. Die sichtbare
  62. sollte vor dem erscheinen auf dem bildschirm erledigt sein. Das heisst
  63. nichts anderes, als das, das ich die Copperliste eines Wasser-Effekts der
  64. bei Rasterzeile $80 beginnt, spaetestens bei $78 fertig haben sollte sonst
  65. sieht es nicht so gut aus, der sich alte und neue Copperliste dann
  66. vermischen. Weiter heisst es das ich sachen wie das Rotieren einer Farb.-
  67. oder um beim Beispiel zu bleiben, einer Wassertabelle erledigen kann wann
  68. ich will. Am sinnvollsten dann, wenn der Blitter gerade zu tun hat. Dabei
  69. darf man naturlich nicht direkt nachdem Blitteraufruf in die Warteschleife
  70. verzweigen, sondern muss erst das erledigen lassen was zu tun ist. Wenn
  71. dann die Warteschleife noch noetig ist, also eine weitere Blitteraktion
  72. gestartet wird, kann man sie einsetzen, falls keine Blitteraktion waehrend
  73. dieses Bildschirmaufbaus stattfindet, kann man die Warte schleife ruhig
  74. weglassen. Dieses Fehler findet man noch sehr oft in Demo`s und Intro`s
  75. auch besserer Programmierer. Ich habe es auch eine Zeit gemacht, gebe ich
  76. offen zu, aber das ist irgendwie Reflex, man Programmiert einen Blitter
  77. aufruf, und wartet dann bis er fertig wird. Naja, beachtet das, und es wird
  78. kuerzer...Zawr nur 12 Bytes, aber das ist ja auch schon was.
  79. Ein Intelligenter ablauf eines Bildschirm aufbaues saehe dann ungefaehr so
  80. aus.
  81.  
  82. Auf VHbreich warten.
  83.  
  84.  Prozessor                              Blitter
  85.  
  86. Daten fuer Laufschrift-
  87. Scroll an den Blitter ueber-
  88. geben.
  89.                                         Blitter verschiebt Laufschrift
  90.  
  91. Musicroutine anspringen                              ()
  92.  
  93.           ()                                         ()
  94.  
  95. Blitter daten fuer das rotieren
  96. der groessten Tabelle geben.
  97.                                         Blitter rotiert groesste Tabelle
  98. Prozessor wertet position der
  99. Laufschrift aus, und errechnet die                   ()
  100. Quellwerte des neuen Buchstabens aus.
  101. Weiteren Laufschrift-Features werden                 ()
  102. ausgewertet.
  103.  
  104. Dem Blitter das Kopieren des neue
  105. Buchstabens aufgeben.
  106.                                         Blitter kopiert neuen Buchstaben
  107. Andere aufgabe des Intros erledigen
  108. (Stars, weitere tabellen, Mausabfrage)               ()
  109.  
  110. Zurueck zum Anfang.
  111.  
  112. Natuerlich ist das nur ein kleines Intro ohne viel effekte, aber wenn man
  113. sich diese Art und Weise an ein Intro macht, kann man sicher sein das man
  114. die Zeit die man hat, und ebenfalls den Amiga, schon sehr gut ausgenutzt
  115. hat. Wie ich schonmal erwaehnt habe, kann man auch den Copper sachen fuer
  116. sich erledigen lassen. Den ersten Blitteraufruf fuer das verschieben der
  117. Laufschrift ist dazu gut. Aber das ist nur sehr selten von noeten, und auch
  118. nicht so Flexibel, da der Aufwand den das Umschreiben der Copperliste,
  119. falls sich was an der Geschwindigkeit aendert, so gross ist, das kein
  120. Geschwindigkeitsvorteil dabei rumkommt.
  121. Sobald die zu erledigenden Aufgaben zahlreicher werden, sollte man sie
  122. ausmessen, um die Ideale paarung zwischen Blitter und Prozessor gleichlauf
  123. zu erreichen.
  124. Mit ausmessen meine ich, die Zeit die eine Routine in Rasterzeilen braucht.
  125. Um das rauszukriegen braucht man keine Taktzyklentabelle sondern laesst
  126. einfach die Copperliste leer. Dann aendert man vor jeder Routine mit
  127. Move.w  Farbe,$Dff180, die Bildschirm farbe. Dann kann man mit Augenmass,
  128. verschiedene Tatigkeiten kombinieren. Da die taetigkeiten die der Prozessor
  129. ausfuehrt zwar komplizierter sind, aber nicht soviel Zeit brauchen, koennen
  130. wir mehrere von ihnen in der Zeit einer Blitteraktion erledigen lassen.
  131. Wenn man dann noch die Mischung zwischen sichtbarer und unsichtbarer Aktion
  132. beherscht, dann kommt man auf sehr gute ergebnisse in der ausnutzung der
  133. Zeit.
  134. Natuerlich dauert es seine Zeit bis man das alles beachtet, aber es lohnt
  135. sich wirklich. Den obwohl Intro/Demoprogrammierer ja angeblich schlechte
  136. Programmierer sind, muessen auch von ihnen die Grundreglen des Programmierens
  137. beachtet werden.
  138.  
  139. Desweiteren sollte man sein Intro/Demo gut strukturieren. Das Strukturieren
  140. geht allerdings nicht nach einem ganz bestimmten Schema, sondern wie es
  141. fuer euch am uerbsichtlichsten ist.
  142. Ein Teil von euch wird meine Struktur uebernehmen, bis sie eine bessere
  143. finden. Diese Strukturen unterscheiden sich nur durch Einzelheiten. Manche
  144. schreiben alle Routinen direkt hintereinander, manche schreiben ein grosse
  145. Aufruftabelle und lassen sie abarbeiten. Wie ihr das macht ist natuerlich
  146. euch ueberlassen. Ihr solltet allerdings nicht jedesmal wenn ihr was neues
  147. schreibt die Struktur wechseln, da sich das Gehirn ja auch daran gewoehnen
  148. muss, wo es etwas zu suchen hat, und wo nicht.
  149.  
  150. Desweiteren ist es wichtig das ihr nach jedem Teilschritt das ganz wieder
  151. abspeichert, und zwar jedesmal unter neuem Namen, denn nur so kann man sehr
  152. genau festlegen was zum Fehler in der Routine fuehrte, und so braucht man
  153. nicht zu grosse Stuecke neu zu programmieren. Da sich das aber schlecht auf
  154. die uebersichtlichkeit der Disk auswirkt, koennt ihr sobald wieder zehn
  155. Sources fertig sind, die alle in einen Order kopieren. So liegen sie euch
  156. nicht im Weg und sind aber trotzdem da. Desweiteren solltet ihr der Zeit
  157. wegen, Ueberlegen, ob ihr, falls ihr Grafiken oder Music einbindet, die
  158. nach jedem Assemblieren wieder mit `y` reinzuholen. Meistens ist das
  159. garnicht von noeten, da das Zeug ja nicht ueberschrieben wird. Das einzige
  160. was eigentlich jedesmal eingebunden werden muss, ist die Musik. Aber da
  161. kann man ja eingreifen in dem man sie nur abundzu in den Source einbaut, um
  162. zu schauen wie es so laeuft. Desweiteren kann man ja auch die
  163. Abspielroutine umschreiben, so das sie auf einen Feste Adresse zugreift,
  164. anstatt einen PC-Relativen Wert zu holen.
  165.  
  166. Also aus                Move.l  Mt-Data(PC),A0
  167. wird                    Lea     $60000,A0
  168.  
  169. oder so aehnlich.
  170. Falls aber Manipulationen am Bild stattfinden, solltet ihr wenigstens die
  171. sachen aus dem Ram: holen lassen.
  172. Desweiteren kann man bei sehr viel Grafik oder Musik, auch noch den vom
  173. Seka zu reservierenden Bereich ins Fastmem legen, dann stoert und der
  174. Source nicht mehr. Allerdings muesst ihr dann immer mit Org/Load arbeiten,
  175. da die Sachen mit Blitter/Copper ja im Fastmem nicht laufen.
  176. So, gibt es noch mehrere Tricks um sich Platz zu machen. Aber man muss sie
  177. nicht oft anwenden bei der Intro/Demo Programmierung. Bei Spielen ist es da
  178. schon etwas anderes, aber soweit sind wir ja noch nicht.
  179.  
  180. Den letzen Tip den ich euch noch geben kann, werden manche von euch schon
  181. selber heraus gefunden haben. Setzt euch niemals mit schlechter Laune an
  182. ein Programm...Denn wenn dann was falsch laeuft regt man sich nur unnoetig
  183. auf, und dann klappt ueberhaupt nichts mehr. Dann sollte man eine Pause
  184. miteinem netten Spiel einlegen, und dann sieht alles schon wieder viel
  185. besser aus.
  186.  
  187. C.U.
  188.  
  189.                 Jeff Kandle
  190.